package com.seguriapp.gwt.client;

import com.google.gwt.activity.shared.ActivityManager;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.inject.client.GinModules;
import com.google.gwt.inject.client.Ginjector;
import com.google.gwt.place.shared.Place;
import com.google.gwt.place.shared.PlaceController;
import com.google.gwt.place.shared.PlaceHistoryHandler;
import com.seguriapp.gwt.client.gin.SeguriAppGinModule;
import com.seguriapp.gwt.client.mvp.SeguriAppPlaceHistoryMapper;
import com.seguriapp.gwt.client.PrincipalPagePresenter;
public class SeguriApp implements EntryPoint {

  @GinModules(SeguriAppGinModule.class)
  public interface SeguriAppGinjector extends Ginjector {

    EventBus getEventBus();

    PlaceController getPlaceController();

    ActivityManager getActivityManager();

    PlaceHistoryHandler getPlaceHistoryHandler();

    PrincipalPagePresenter getPrincipalPagePresenter();

    SeguriAppPlaceHistoryMapper getPlaceHistoryMapper();
  }

  public final static SeguriAppGinjector ginjector = GWT.create(SeguriAppGinjector.class);

  private final Place lugarPorDefecto = Place.NOWHERE;

  @SuppressWarnings("deprecation")
  public void onModuleLoad() {
    // Todo el renderizado de paginas sera realizado en el panel central de la
    // pagina principal.
    PrincipalPagePresenter principalPagePresenter = ginjector.getPrincipalPagePresenter();
    ginjector.getActivityManager().setDisplay(principalPagePresenter.getPanelCentral());

    // Iniciar el manejador del historial del navegador.
    PlaceHistoryHandler historyHandler = ginjector.getPlaceHistoryHandler();
    historyHandler.register(ginjector.getPlaceController(), ginjector.getEventBus(), lugarPorDefecto);

    principalPagePresenter.start();
  }

}
